package io;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 小问题：缓冲流写出时的缓冲区的问题
 */
public class FlushDemo {
    public static void main(String[] args) throws IOException {
        /*
          通过缓冲流修出的数据会被临时存入缓冲流内部的字节数组中
          直到数组数据存满时才会写出一次
          通过韩冲输出流的flush()方法会强制将缓冲流已经缓冲的数据一次取出


          flush()方法是在接口Flushable中定义的
          而字节输出流的超类OutputStream实现了该接口，这意味着所有字节输出流都具有该方法
          但是只有缓冲流真正实现了flush()应有的功能
          其他高级流flush()方法都是调用其连接的流的flush(),将该动作传递下去
          */
        FileOutputStream file=new FileOutputStream("longer.png");
        BufferedOutputStream buffer=new BufferedOutputStream(file);
        String line="儿子儿子我是你爸爸";
        buffer.write(line.getBytes(StandardCharsets.UTF_8));
        buffer.flush();
        buffer.close();
    }
}
